/* * Demos: DrakkarKeel - An Enterprise Collaborative Search Platform * * The contents of this file are subject under the terms described in the * DRAKKARKEEL_LICENSE file included in this distribution; you may not use this * file except in compliance with the License. * * 2013-2014 DrakkarKeel Platform. */ package controllers; import drakkar.prow.DrakkarProw; import drakkar.prow.RequestSearchFactory; import drakkar.prow.facade.desktop.event.ProwAdapter; import drakkar.prow.facade.desktop.event.SearchAdapter; import drakkar.prow.facade.desktop.event.SearchEvent; import drakkar.prow.facade.desktop.event.SeekerEvent; import drakkar.oar.Request; import drakkar.oar.Response; import drakkar.oar.ResultSetMetaData; import drakkar.oar.slice.error.RequestException; import drakkar.oar.util.Invocation; import static drakkar.oar.util.KeySession.CONNECTION_FAILED; import static drakkar.oar.util.KeySession.CONNECTION_SUCCESSFUL; import static drakkar.oar.util.KeyTransaction.REPLY; import static drakkar.oar.util.KeyTransaction.SEARCH_RESULTS; import drakkar.oar.util.OutputMonitor; import java.io.File; import java.net.MalformedURLException; import java.util.ArrayList; import javax.swing.JLabel; import javax.swing.JOptionPane; import ui.SearchTableModel; public class FrameController { static int status = 0; private DrakkarProw client; private SearchTableModel tableModel; private JLabel label; @SuppressWarnings("FieldMayBeFinal") ProwAdapter clientAdapter = new ProwAdapter() { @Override public void notifyRequestConnection(SeekerEvent evt) { Response response = evt.getResponse(); int reply = Integer.valueOf(response.get(REPLY).toString()); switch (reply) { case CONNECTION_FAILED: JOptionPane.showMessageDialog(null, "Failed Connection!!", "Error", JOptionPane.ERROR_MESSAGE); System.exit(1); break; case CONNECTION_SUCCESSFUL: break; } } }; SearchAdapter searchAdapter = new SearchAdapter() { @Override public void notifySearchResults(SearchEvent se) { Response response = se.getResponse(); ResultSetMetaData list = (ResultSetMetaData) response.get(SEARCH_RESULTS); tableModel.setDataModel((ArrayList) list.getAllResultList(), client.getCnxServer().getServerHost()); label.setText("<html> " + list.getAllResultList().size() + " matching documents </html>"); } }; public FrameController(ui.MainFrame mainFrame) throws RequestException { this.client = mainFrame.getClient(); this.label = mainFrame.getLabel(); tableModel = new SearchTableModel(); client.getClientListenerManager().addClientListener(clientAdapter); client.getClientListenerManager().addSearchListener(searchAdapter); client.loginSearchCollabSession(); } public void search(String query) { Request request = RequestSearchFactory.create(query, RequestSearchFactory.META_SEARCH_AND_SPLIT); client.send(request, Invocation.SYNCHRONOUS_METHOD_INVOCATION); } public void logout() { client.logout(); } @SuppressWarnings({"BroadCatchBlock", "TooBroadCatch", "UseSpecificCatch"}) public void getFile(String url) { try { client.downloadAndOpenFile(url); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Failed when opening the file.", "Collaborative Search System", 0); } } public SearchTableModel getTableModel() { return tableModel; } public String processPath(String path) { File f = new File(path); String newPath = null; try { newPath = f.toURI().toURL().toString().substring(9); } catch (MalformedURLException ex) { OutputMonitor.printStream("", ex); } return newPath; } }